package com.android.webcamsViewer;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
	// Private attributes
	private Context mContext;
	private List<Bitmap> images = null;

	public ImageAdapter(Context c) {
		mContext = c;
		images = new ArrayList<Bitmap>();
	}

	/**
	 * Get length of images list
	 */
	public int getCount() {
		return images.size();
	}

	/**
	 * Añade una imagen representada mediante un Bitmap en la lista de imágenes
	 * Bitmaps del adaptador
	 * 
	 * @param image
	 */
	public void addImage(Bitmap image) {
		images.add(image);
	}

	/**
	 * Devuelve un elemento del adaptador en función de su posición
	 * 
	 * @param position Posición de la imagen 
	 * @return Objecto que representa a la imagen 
	 */
	public Object getItem(int position) {
		return position;
	}

	public long getItemId(int position) {
		return position;
	}

	/**
	 * 
	 */
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imageView;
		if (convertView == null) { // 
			imageView = new ImageView(mContext);

		} else {
			imageView = (ImageView) convertView;
		}
		imageView.setImageBitmap(images.get(position));
		imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
		imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
		imageView.setPadding(8, 8, 8, 8);
		return imageView;
	}
	
	/**
	 * Free memory
	 */
	protected void finalize() throws Throwable {
		for(Object element : images.toArray()){
			Bitmap bm = (Bitmap) element;
			bm.recycle();
		}
		super.finalize();
	}
	
}
